# -*- coding: utf-8 -*-
#平滑处理
from scipy import signal
import numpy as np
from skimage import data
import matplotlib.pyplot as plt

#定义二位灰度图像的空间滤波函数
def correl2d(img,window):
    #使用滤波器实现图像的空间相关
    #mode='same'表示输出尺寸等于输入尺寸
    #boundary='fill'表示滤波钱，用敞亮值填充原始图像的边缘，默认敞亮值为0
    s=signal.correlate2d(img,window,mode='same',boundary='fill')
    return s.astype(np.uint8)



img=data.camera()#原始图像


#3*3盒滤波模板
window1=np.ones((3,3))/(3**2)
#5*5盒装滤波模板
window2=np.ones((5,5))/(5**2)
#9*9盒装滤波模板
window3=np.ones((9,9))/(9**2)

    
#生成滤波结果    
new_img1=correl2d(img,window1)
new_img2=correl2d(img,window2)
new_img3=correl2d(img,window3)

#显示图像
plt.figure()

plt.imshow(img,cmap='gray')
plt.figure()

plt.imshow(new_img1,cmap='gray')#3*3滤波结果

plt.figure()
plt.imshow(new_img2,cmap='gray')#5*5滤波结果

plt.figure()
plt.imshow(new_img3,cmap='gray')#9*9滤波结果









